"""
第1题、读取一副RGB图像，
将其二值化、灰度化，
并使用matplotlib如图1展示。
"""
# 二值化、灰度化

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

# 汉字字体，优先使用楷体，找不到则使用黑体
plt.rcParams['font.sans-serif'] = ['Kaitt', 'SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = False

## plt.imshow()负责对图片进行处理、plt.show()负责对图片进行显示
img = Image.open("img.png")
plt.subplot(1, 3, 1)
plt.title('原图')
plt.imshow(img)
plt.axis('off')

im_gray = img.convert('1')
plt.subplot(1, 3, 2)
plt.title('灰度图')
plt.imshow(im_gray)
plt.axis('off')
## PIL的九种不同模式：1，L，P，RGB，RGBA，CMYK，YCbCr,I，F
## 其中L表示的是灰度的图像
# 图片二值化
# 模式L”为灰色图像，它的每个像素用8个bit表示，0表示黑，255表示白，其他数字表示不同的灰度。
Img = img.convert('L')
# 自定义灰度界限，大于这个值为黑色，小于这个值为白色
threshold = 100
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
# 图片二值化 使用table来设置二值化的规则
photo = Img.point(table, '1')
plt.subplot(1, 3, 3)
plt.title('二值化')
plt.imshow(photo)
plt.axis('off')
# plt.imshow(photo)
plt.show()
